Linux逻辑卷管理LVM详解(转载) |
您所在的位置:网站首页 › linux 启动脚本详解 › Linux逻辑卷管理LVM详解(转载) |
Multiple devices driver support (RAID and LVM) Device mapper support Snapshot target (EXPERIMENTAL) Mirror target (EXPERIMENTAL) 然后重新编译内核,即可将LVM的支持添加到新内核中。 为了使用LVM,要确保在系统启动时激活LVM,在RedHa的版本中,系统启动脚本已具有对激活LVM的支持,在/etc/rc.d/rc.sysinit中有以下内容: if [ -x /sbin/lvm.static ]; then action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailurefivgchange -a y命令激活系统所有卷组。 四、 创建和管理LVM要创建一个LVM系统,一般需要经过以下步骤:1、 创建分区使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是相同的,差别仅仅是LVM的分区类型为8e。# fdisk -l /dev/sdb /dev/sdcDisk /dev/sdb: 18.2 GB, 18200739840 bytes255 heads, 63 sectors/track, 2212 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk /dev/sdb doesn’t contain a valid partition tableDisk /dev/sdc: 18.2 GB, 18200739840 bytes255 heads, 63 sectors/track, 2212 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System/dev/sdc1 1 200 1606468+ 8e Linux LVM如果要将使用整块盘,能通过下面的命令来覆盖磁盘上的原有分区信息:#dd if=/dev/zero of=/dev/sdc bs=512 count=1 2、 创建物理卷创建物理卷的命令为pvcreate,利用该命令将希望添加到卷组的所有分区或磁盘创建为物理卷。将整个磁盘创建为物理卷的命令为:# pvcreate /dev/sdbPhysical volume "/dev/sdb" successfully created 将单个分区创建为物理卷的命令为:# pvcreate /dev/sdc1Physical volume "/dev/sdc1" successfully created也能同时生成多个卷:#pvcreate /dev/sdb /dev/sdc1 3、扫描块设备通过lvmdiskscan能看到那些设备成为了物理卷.#lvmdiskscan /dev/ramdisk [ 16.00 MB] /dev/sda [ 4.00 GB] /dev/root [ 2.88 GB] /dev/ram [ 16.00 MB] /dev/sda1 [ 101.94 MB] /dev/VolGroup00/LogVol01 [ 1.00 GB] /dev/ram2 [ 16.00 MB] /dev/sda2 [ 3.90 GB] LVM physical volume /dev/lvm_test/test [ 508.00 MB] /dev/ram3 [ 16.00 MB] /dev/ram4 [ 16.00 MB] /dev/ram5 [ 16.00 MB] /dev/ram6 [ 16.00 MB] /dev/ram7 [ 16.00 MB] /dev/ram8 [ 16.00 MB] /dev/ram9 [ 16.00 MB] /dev/ram10 [ 16.00 MB] /dev/ram11 [ 16.00 MB] /dev/ram12 [ 16.00 MB] /dev/ram13 [ 16.00 MB] /dev/ram14 [ 16.00 MB] /dev/ram15 [ 16.00 MB] /dev/sdb [ 512.00 MB] LVM physical volume /dev/sdc [ 512.00 MB] LVM physical volume 5 disks 16 partitions 2 LVM physical volume whole disks 1 LVM physical volume 4、显示物理卷能使用pvs,pvscan,pvdisplay来显示当前系统中的物理卷.#pvs PV VG Fmt Attr PSize PFree /dev/sda2 VolGroup00 lvm2 a- 3.88G 0 /dev/sdb lvm_test lvm2 a- 508.00M 0 /dev/sdc lvm2 -- 512.00M 512.00M#pvscan PV /dev/sdb VG lvm_test lvm2 [508.00 MB / 0 free] PV /dev/sda2 VG VolGroup00 lvm2 [3.88 GB / 0 free] PV /dev/sdc lvm2 [512.00 MB] Total: 3 [4.87 GB] / in use: 2 [4.37 GB] / in no VG: 1 [512.00 MB]#pvdisplay --- Physical volume --- PV Name /dev/sdb VG Name lvm_test PV Size 512.00 MB / not usable 4.00 MB Allocatable yes (but full) PE Size (KByte) 4096 Total PE 127 Free PE 0 Allocated PE 127 PV UUID Pkp5Cq-SD1w-ANw2-cDDe-BGtw-nmFS-jTxXFD --- NEW Physical volume --- PV Name /dev/sdc VG Name PV Size 512.00 MB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID BNCVEE-YWlK-0mrV-LOcf-0tCY-WWNw-DeySk0 5、移除物理卷#pvremove /dev/sdcLabels on physical volume "/dev/sdc" successfully wiped 6、 创建卷组创建卷组的命令为vgcreate,将使用pvcreate建立的物理卷创建为一个完整的卷组:# vgcreate lvm_test /dev/sdc1 /dev/sdbVolume group "lvm_test" successfully createdvgcreate命令第一个参数是指定该卷组的逻辑名:lvm_test。后面参数是指定希望添加到该卷组的所有分区和磁盘。vgcreate在创建卷组 lvm_test 以外,还设置使用大小为4 MB的PE(默认为4MB),这表示卷组上创建的所有逻辑卷都以 4 MB 为增量单位来进行扩充或缩减。PE最小为1KB ,并且必须总是1KB的 2^n 的倍数(使用-s指定,具体请参考man vgcreate)。 7、 激活卷组卷组在创建时默认激活,也能使用vgchange来激活卷组:# vgchange -a y lvm_test 8、 添加新的物理卷到卷组中当系统安装了新的磁盘或新建分区并创建了新的物理卷,而要将其添加到已有卷组时,就需要使用vgextend命令:#fdisk -l /dev/sdcDisk /dev/sdc: 18.2 GB, 18200739840 bytes255 heads, 63 sectors/track, 2212 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System/dev/sdc1 1 200 1606468+ 8e Linux LVM/dev/sdc2 201 400 1606500 8e Linux LVM #pvcreate /dev/sdc2Physical volume "/dev/sdc2" successfully created # vgextend lvm_test /dev/sdc2Volume group "lvm_test" successfully extended这里/dev/sdc2是新的物理卷。 9、显示卷组显示卷组能使用vgs和vgdisplay.# vgs VG #PV #LV #SN Attr VSize VFree VolGroup00 1 2 0 wz--n- 3.88G 0 lvm_test 1 1 0 wz--n- 508.00M 0 # vgdisplay --- Volume group --- VG Name lvm_test System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 10 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size 508.00 MB PE Size 4.00 MB Total PE 127 Alloc PE / Size 127 / 508.00 MB Free PE / Size 0 / 0 VG UUID uJx24t-WWdY-vffu-97Of-mgFB-FEov-eRwzAf 10、扫描磁盘生成缓存文件#vgscan Reading all physical volumes. This may take a while... Found volume group "lvm_test" using metadata type lvm2 Found volume group "VolGroup00" using metadata type lvm2 11、 从卷组中删除一个物理卷要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被所有逻辑卷正在使用,就要使用pvdisplay命令察看一个该物理卷信息:#pvdisplay /dev/sdc2--- Physical volume ---PV Name /dev/sdc2VG Name lvm_testPV Size 1.53 GB / not usable 868.00 KBAllocatable yes PE Size (KByte) 4096Total PE 392Free PE 392Allocated PE 0 (表示未被使用)PV UUID jAiils-1vRz-Td9k-1AiD-kIJs-191z-YMz09H 如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据备份到其他地方,然后再删除。删除物理卷的命令为vgreduce:# vgreduce lvm_test /dev/sdc2Removed "/dev/sdc2" from volume group "lvm_test" 12、 创建逻辑卷创建逻辑卷的命令为lvcreate:# lvcreate -L 1500 ?n test lvm_testLogical volume "test" created该命令就在卷组lvm_test上创建名字为test,大小为1500M的逻辑卷,并且设备入口为/dev/lvm_test/test (lvm_test为卷组名,test为逻辑卷名)。如果希望创建一个使用全部卷组的逻辑卷,则需要首先察看该卷组的PE数,然后在创建逻辑卷时指定:# vgdisplay lvm_test| grep "Total PE"Total PE 4731# lvcreate -l 4731 lvm_test -n testLogical volume "test" created 13、创建条块化的逻辑卷# lvcreate -L 500M -i2 -n test lvm_test Using default stripesize 64.00 KB Rounding size (125 extents) up to stripe boundary size (126 extents) Logical volume "test" created-i2指此逻辑卷在两个物理卷中条块化存放数据,默认一块大小为64KB. 14、创建映像的逻辑卷。#lvcreate -L 52M -m1 -n test lvm_test /dev/sdb1 /dev/sdc1 /dev/sdb2 Logical volume "test" created-m1表示只生成一个单一映像,映像分别放在/dev/sdb1和/dev/sdc1上,映像日志放在/dev/sdb2上. 15、创建快照卷。#lvcreate --size 10 --snapshot --name snaptest /dev/lvm_test/test 16、 创建文件系统如使用ext3文件系统:#mkfs.ext3 /dev/lvm_test/testmke2fs 1.35 (28-Feb-2004)max_blocks 4294967295, rsv_groups = 0, rsv_gdb = 1024Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)2424832 inodes, 4844544 blocks242227 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=8388608148 block groups32768 blocks per group, 32768 fragments per group16384 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000Writing inode tables: done inode.i_blocks = 90120, i_size = 4243456Creating journal (8192 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 25 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.创建了文件系统以后,就能加载并使用他:# mkdir /mnt/test# mount /dev/lvm_test/test /mnt/test如果希望系统启动时自动加载文件系统,则还需要在/etc/fstab中添加内容:/dev/lvm_test/test /mnt/test ext3 defaults 1 2 17、 删除一个逻辑卷删除逻辑卷以前首先需要将其卸载,然后删除:# umount /dev/lvm_test/test# lvremove /dev/lvm_test/testDo you really want to remove active logical volume "test"? [y/n]: yLogical volume "test" successfully removed 18、 扩展逻辑卷大小LVM提供了方便调整逻辑卷大小的能力,扩展逻辑卷大小的命令是lvextend:# lvextend -L12G /dev/lvm_test/testExtending logical volume test to 12.00 GBLogical volume test successfully resized 上面的命令就实现将逻辑卷test的大小扩大为12G。# lvextend -L+1G /dev/lvm_test/testExtending logical volume test to 13.00 GBLogical volume test successfully resized上面的命令就实现将逻辑卷test的大小增加1G。增加了逻辑卷的容量以后,就需要修改文件系统大小以实现利用扩充的空间。对于希望调整被加载的文件系统大小,使用ext2online(ext2resize) 或 resize2fs.#df -h# ext2online /dev/lvm_test/testext2online /dev/lvm_test/testext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b #df -hFilesystem 容量 已用 可用 已用% 挂载点/dev/mapper/VolGroup00-LogVol01 16G 11G 3.6G 76% //dev/sda1 494M 18M 451M 4% /bootnone 506M 0 506M 0% /dev/shm/dev/mapper/lvm_test-test 13G 63M 13G 1% /mnt/test 一般建议最佳将文件系统卸载,调整大小,然后再加载:# umount /dev/lvm_test/test#resize2fs /dev/lvm_test/test# mount /dev/lvm_test/test /mnt/test 19、 减少逻辑卷大小使用lvreduce即可实现对逻辑卷的容量,同样需要首先将文件系统卸载:# umount /mnt/test#e2fsck -f /dev/lvm_test/test# resize2fs /dev/lvm_test/test 11G# lvreduce -L -1.992G /dev/lvm_test/test (少2个PE的大小)# resize2fs /dev/lvm_test/test (通过此命令确认是否文件系统大小和收缩后的逻辑卷大小匹配)# mount /dev/lvm_test/test /mnt/test 20、显示逻辑卷通过lvscan,lvs及lvdisplay能察看当前系统中存在的逻辑卷。# lvdisplay --- Logical volume --- LV Name /dev/VolGroup00/LogVol00 VG Name VolGroup00 LV UUID sPmLMD-6xq4-wStB-uSAP-jlQc-YKTm-3bt8Pc LV Write Access read/write LV Status available # open 1 LV Size 2.88 GB Current LE 92 Segments 1 Allocation inherit Read ahead sectors 0 Block device 253:0 #lvscan lvscan ACTIVE ’/dev/VolGroup00/LogVol00’ [2.88 GB] inherit ACTIVE ’/dev/VolGroup00/LogVol01’ [1.00 GB] inherit #lvs -o +devices LV VG Attr LSize Origin Snap% Move Log Copy% Devices LogVol00 VolGroup00 -wi-ao 2.88G /dev/sda2(0) LogVol01 VolGroup00 -wi-ao 1.00G /dev/sda2(92) 21、使用过滤控制LVM的设备扫描通过编辑/etc/lvm/lvm.conf 中的filter段,来定义过滤那些设备要扫描。filter =[ "a|/dev/sd.*|", "a|/dev/hd.*|", "r|.*|" ] 上面对scsi及ide设备扫描,对其他设备均不扫描。 22、在线数据迁移通过pvmove能将一个PV上的数据迁移到新的PV上,也能将PV上的某个LV迁移到另一个PV上。#lvs -o +devices LV VG Attr LSize Origin Snap% Move Log Copy% Devices LogVol00 VolGroup00 -wi-ao 2.88G /dev/sda2(0) LogVol01 VolGroup00 -wi-ao 1.00G /dev/sda2(92) test lvm_test -wi-ao 52.00M /dev/sdb1(0) #pvmove -n test /dev/sdb1 /dev/sdc1 #lvs -o +devices LV VG Attr LSize Origin Snap% Move Log Copy% Devices LogVol00 VolGroup00 -wi-ao 2.88G /dev/sda2(0) LogVol01 VolGroup00 -wi-ao 1.00G /dev/sda2(92) test lvm_test -wi-ao 52.00M /dev/sdc1(0) 23、删除卷组按照顺序卸载文件系统,删除逻辑卷,然后删除卷组。#umount /mnt/test# lvremove /dev/lvm_test/testDo you really want to remove active logical volume "test"? [y/n]: y Logical volume "test" successfully removed#vgremove lvm_test Volume group "lvm_test" successfully removed24、故障排查通过在命令后加 -v,-vv,-vvv或-vvvv来获得更周详的命令输出。通过在lvs,vgs后加-P能更好的查看失败设备.#vgs -a -o +devices -P Partial mode. Incomplete volume groups will be activated read-only. VG #PV #LV #SN Attr VSize VFree Devices VolGroup00 1 2 0 wz--n- 3.88G 0 /dev/sda2(0) VolGroup00 1 2 0 wz--n- 3.88G 0 /dev/sda2(92) lvm_test 2 2 0 wz--n- 1016.00M 896.00M pvmove0(0) lvm_test 2 2 0 wz--n- 1016.00M 896.00M /dev/sdb(0),/dev/sdc(0)#lvs -a -o +devices -P Partial mode. Incomplete volume groups will be activated read-only. Failure parsing mirror status fraction: 1 core Failure parsing mirror status fraction: 1 core LV VG Attr LSize Origin Snap% Move Log Copy% Devices LogVol00 VolGroup00 -wi-ao 2.88G /dev/sda2(0) LogVol01 VolGroup00 -wi-ao 1.00G /dev/sda2(92) [pvmove0] lvm_test p-C-ao 60.00M /dev/sdb /dev/sdb(0),/dev/sdc(0) test lvm_test -wI-a- 60.00M pvmove0(0) 五、 总结根据上面的讨论能看到,LVM具有非常好的可伸缩性,使用起来非常方便。能方便地对卷组、逻辑卷的大小进行调整,更进一步调整文件系统的大小,还能方便的进行数据迁移,数据完整性保护。如果希望了解更多信息,请参考LVM-HOWTO。 此文件使用内核为2.6.22.1,在做pvmove时出现错误,如上.补丁如下:Index: linux-2.6.21/drivers/md/dm-raid1.c===================================================================--- linux-2.6.21.orig/drivers/md/dm-raid1.c 2007-05-13 18:56:09.000000000 +0100+++ linux-2.6.21/drivers/md/dm-raid1.c 2007-05-13 19:09:54.000000000 +0100@@ -1288,12 +1288,12 @@ static int mirror_status(struct dm_targe for (m = 0; m nr_mirrors; m++) DMEMIT("%s ", ms->mirror[m].dev->name); - DMEMIT("%llu/%llu",+ DMEMIT("%llu/%llu ", (unsigned long long)ms->rh.log->type-> get_sync_count(ms->rh.log), (unsigned long long)ms->nr_regions); - sz = ms->rh.log->type->status(ms->rh.log, type, result, maxlen);+ sz += ms->rh.log->type->status(ms->rh.log, type, result+sz, maxlen-sz); break; |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |